Search Results: "isaac"

25 December 2006

Isaac Clerencia: Xen + DCOP: automatic screenshots

eBox is growing a lot lately, and updating screenshots is always a cumbersome task, so, prompted by a workmate, I decided to do something to get automatic screenshots. The first step was to get an automatic way to install eBox from scratch to have something to get screenshots from. That was quite easy using the Xen facilities available in Debian. I only had to write a role for xen-create-image and now I can get an eBox up and running in a couple of minutes executing a simple “xen-create-image –role ebox –hostname ebox-screenshots”. Using eBox introspection capabilities and some Perl magic, it was quite easy to autogenerate a list of the URLs that we should take screenshots from. Once we had the URL list and a running eBox all we have to do was to have a browser logging in the eBox web interface and loop through the URLs taking screenshots. To achieve that I resorted to Ruby, Konqueror, KSnapshot and DCOP, and it took less than 40 lines of code to do it. The first problem was spawning Konqueror and KSnapshot instances and getting a DCOP reference for them, but that was easily done using Ruby’s fork, which is quiet convenient:

konqpid = Kernel.fork exec("konqueror --geometry 1024x768+0+0")
ksnappid = Kernel.fork exec("ksnapshot")
konqwin = KDE::DCOPRef.new("konqueror-# konqpid ","konqueror-mainwindow\#1")
ksnapshot = KDE::DCOPRef.new("ksnapshot-# ksnappid ","interface")
The second problem I faced was logging in the eBox interface, I had to enter the password and submit the form. Fortunately Konqueror’s DCOP interface offers a really nice “evalJS” function:

konqwin.openURL("https://# ip /ebox/")
konqhtml = KDE::DCOPRef.new("konqueror-# konqpid ","html-widget1")
konqhtml.evalJS("document.getElementById('credential_0').value = 'ebox'")
konqhtml.evalJS("document.login.submit()")

and we’re in! :D Now we only have to loop through the urls taking the screenshots. I had a little problem because ksnapshot expects you to click the left mouse button before taking the screenshot. Fortunately that could be easily fixed using xte from the xautomation package to simulate the click.

urls.each url
konqwin.openURL("https://# ip /ebox/# url ")
name = "# konqwin.caption.split(/-/)[1].strip.gsub(/ /,'_') "
ksnapshot.slotGrab
system("xte 'mousemove 100 100' 'mouseclick 1'")
ksnapshot.save("# outpath /# name .png")

The code I pasted lacks a bit of initialization and some sleeps I put there to synchronize the stuff, but basically that’s all. I just love Ruby, KDE and DCOP :)

16 December 2006

Isaac Clerencia: Hacking on eBox again

Last months I’ve been busy with some projects at work, involving some Qt programming, dealing with Cisco JTAPI and other nuisances, which have prevented me from working in eBox. My work desktop is about a meter away from the now three full-time developer eBox team, so I’ve been closely following the development process and participating in some design meetings and at last, I’ve found some time to write nice stuff for it again. eBox lacked administration logging, that is, a log with every change made through the eBox administrative interface (quite useful to know when something was changed or who changed it), so I’ve added support for that in the eBox framework and have implemented the necessary stuff in two modules as an example. There is still a lot of work until every module reports every action to the module, but the core is already working:
As a nice side effect, now we can also show the changes that you are about to save or rollback:
FYI, a new eBox version (0.7.99, aka 0.8rc1) was released some days ago, you can give it a try. Check our downloads section. Obviously these changes won’t be included in 0.8, but in 0.9, which will also add a openvpn module, traffic shaping and other improvements.

14 December 2006

Isaac Clerencia: Freedom of speech and UC Berkeley rocks

My workmate Javier Uruen has just pointed me to Banned for George Bush T-shirt, a story about a guy that was banned from an airplane because he was wearing a “George W. Bush is world’s #1 terrorist” t-shirt. He argued it was his right to express his opinion, while the airline said the t-shirt was offensive and he wouldn’t be able to flight unless he took it off. I can’t see how that shirt can be offensive for anyone besides George W. Bush and I guess nobody would have prevented a person from flying because of an “I love George W. Bush” t-shirt, and that is offensive. Freedom of speech seems to be in danger. In brighter news, I’ve discovered that UC Berkeley freely offers video and audio for some lectures. I’ve been listening to some lectures from the Undergraduate Colloquium on Political Science and they rock. Allan Ross, the lecturer is awesome, I wish I would have had somebody like him in my university.

25 October 2006

Isaac Jones: The Fun of Functional Infrastructure

Say the word "infrastructure" and you conjure up the images of paved roads, hot water, and that series of tubes that makes up the Internet. In other words, infrastructure is that necessary stuff that lets you get your job done, but it doesn't seem sexy. Every open source project needs a high-quality infrastructure, though, and it turns out that building infrastructure is extremely fun, even though it's not as sexy as building "the next killer app". I've spent a lot of time building software infrastructure. The Debian project is (mostly) not about building new applications. It's about brining together projects with a solid infrastructure so that real people can use it. The Haskell Cabal is a piece of infrastructure that helps other people to compile and distribute applications. So what makes building software infrastructure seem less fun, even though it's really great? It's the idea of measuring the results of your work indirectly. It's easy to say that we wrote n lines of code this year, or that "my application" has n users. Depending on the size of n, that might make us feel good, or feel bad. But measuring results indirectly is much harder. You have to be content to say things like, "I helped 10 programmers build 15 applications for 5000 users, but I only helped each one a little bit." That's an indirect result. But if you are more interested in the result than in who creates it, then you're in a good position to let yourself have fun building infrastructure. If you are more interested in fun than in glory, then you're in a good position to get fulfillment in life :) In fact, infrastructure is really fun to build, at least in computing. You get to take a series of tubes and put them together in a new way. You get to lay the groundwork for many projects that come behind you. There's a bit of systems administration, a bit of hacking, and a lot of contact with the your peers in the community. People will help you figure out what to build since they're chasing right behind you using your stuff (at least in the open source world). People will respect and even occasionally thank you for helping them to do their job. Of course, some pieces of infrastructure become sexy. Debian's apt-get is considered pretty darn cool among those in the know. Writing awesome compilers that real people use (like GHC or Cryptol) is the dream of a lot of computing science academics. The Internet itself is actually cool these days, or so I hear. The Haskell language and community is badly in need of infrastructure right now. We need people to flesh out and improve the existing debuggers, code coverage tools, and IDE support. We need a robust package database, sysadmin support, and project repositories. We need folks to make Debian and Gentoo packages from Haskell packages. If you like people, and want people to get to know you and to appreciate your work, then go out there and discover an important piece of infrastructure that people need. Ask them what exactly they want, how they would build it, but be sure to bring your own vision to the project as well. Most of all, have fun building something with your friends.

Isaac Clerencia: Two weeks for US elections

As you may know, the future of the US world is again at stake in two weeks. Elections for the United States Senate and the United States House of Representatives will be held on November 7. Most general indicators are favorable to the Democrats (only 40% approve Bush administration, 46% vs. 34% think that Democrats would handle Iraq better than the GOP, 55% think US shouldn’t have invaded Iraq), and it seems they will likely get a majority in the House (latest polls show a 13-18 seats Democratic lead). Democratic Senate majority sounds far-fetched though. First of all, the members of the US Senate (which has 100 members, two per state, regardless of population) are elected by classes. The Senate is formed by three classes, so in this election only a third of the senators are challenged, which makes a turnover more difficult. Right now the Senate is composed by 55 Republicans, 44 Democrats and 1 Independent (who usually caucuses with the Democrats). Only 15 out of the 33 contested seats are held by Republicans, so Democrats would have to gain 7 of those 15 to get a majority (as a tie is broken by the Senate President, who happens to be the Vicepresident of the US, Dick Cheney). There are four close races that should be taken into account (Tennessee, Missouri, Virginia and New Jersey). Democrats would need to win three out of these to achieve majority. The amazing fact is that according to the latest polls they can make it. I’m not really fond of Democrats either (IMHO they are as right-winged as usual European right-winged parties), but lots of Dem Senate candidates are taking solid anti-war positions, which is quite good. In addition, I would say that anything that can take some power out of Bush hands it’s good news for the world. I just hope the anti-GOP wave is big enough. So, please, fellow American reader, on November 7th, vote the GOP out of the Senate and the House :)

Isaac Clerencia: Two weeks to US elections

As you may know, the future of the US world is again at stake in two weeks. Elections for the United States Senate and the United States House of Representatives will be held on November 7. Most general indicators are favorable to the Democrats (only 40% approve Bush administration, 46% vs. 34% think that Democrats would handle Iraq better than the GOP, 55% think US shouldn’t have invaded Iraq), and it seems they will likely get a majority in the House (latest polls show a 13-18 seats Democratic lead). Democratic Senate majority sounds far-fetched though. First of all, the members of the US Senate (which has 100 members, two per state, regardless of population) are elected by classes. The Senate is formed by three classes, so in this election only a third of the senators are challenged, which makes a turnover more difficult. Right now the Senate is composed by 55 Republicans, 44 Democrats and 1 Independent (who usually caucuses with the Democrats). Only 15 out of the 33 contested seats are held by Republicans, so Democrats would have to gain 7 of those 15 to get a majority (as a tie is broken by the Senate President, who happens to be the Vicepresident of the US, Dick Cheney). There are four close races that should be taken into account (Tennessee, Missouri, Virginia and New Jersey). Democrats would need to win three out of these to achieve majority. The amazing fact is that according to the latest polls they can make it. I’m not really fond of Democrats either (IMHO they are as right-winged as usual European right-winged parties), but lots of Dem Senate candidates are taking solid anti-war positions, which is quite good. In addition, I would say that anything that can take some power out of Bush hands it’s good news for the world. I just hope the anti-GOP wave is big enough. So, please, fellow American reader, on November 7th, vote the GOP out of the Senate and the House :)

17 October 2006

Isaac Jones: Haskell Packages 6.6?

I'm excited because we're pretty well along the way to getting cabal-install and friends working nicely. We've got almost 30 packages in the database. Let's imagine something that would be awesome for the Haskell community. A set of Haskell packages which are all known to work together with a particular version of cabal (the one that GHC comes with), and a particular version of GHC. GHC version 6.6 was just released, and I think we should try to make this happen. Currently, we have a set of 27 "unstable" packages. They may or may not work with each-other. I just created an empty directory "testing". I propose that we start testing packages, starting with the Cabal release that'll went into GHC 6.6, and make sure they work nicely together. Once they're known to work, we can migrate them from the "unstable" directory to the "testing" directory. Once we have a sufficient collection of packages, and once ghc 6.6 is released, we can make a snapshot of this directory, call it "stable-6.6" or something. Then if you have ghc 6.6 and cabal-install, you should be able to "cabal-install p" for any package, and it'll definitely work. So what will we need for this to happen?
  • An installed version of ghc 6.6 on the hackage/darcs server. Maybe in a chroot or something. Maybe from the nightly build tree or the previous snapshot?
  • Some initial set of packages (maybe just cabal-install) to start off.
  • Some script that goes through and builds all of the "unstable" packages in dependency order. I think cabal-install can do this already. In fact, it would be ideal if we used cabal-install for this.
  • The script should also run ./setup haddock and ./setup test. If the packages seem to work w/ 6.6 and the other packages in "testing", it should get migrated from "unstable" to "testing".
  • A web interface (lemmih is working on it)
  • A script to upload packages to "unstable" (Paolo is working on it).
  • Someone to spearhead all of this! We need volunteers. Please email me if you think you can head this up.
  • 9 October 2006

    Isaac Clerencia: Anti-bullfighting demo

    More than a thousand people took part in the anti-bullfighting demo that every year takes place in Zaragoza. (Spanish) For those who are not familiar with bullfighting, it’s basically a Spanish shameful tradition, where six bulls are released one at a time to a bullfighting arena. There the bulls are tortured to death, first they’re stabbed on the neck by horse-mounted lancers, then they got planted in their back several harpoon-pointed sticks, and after half an hour of torture and agony, the bullfighter definitely murders the bull with a sword. Does it sound disgusting, cruel and sadist? It definitely is, and I’ve skipped the worst details. (yeah, I’ve got sick just writing this) We gathered at a square near the bullfighting arena, and then we headed towards it shouting stuff like “torture is neither art nor culture” (as bullfighting defenders usually say that “bullfighting is a central part of Spanish culture”), “murderers”, “torturers”, “sadists”, “you’re cavemen, evolve!”, “if you wanna see blood, slit your wrist” or “you should be ashamed of how you are raising your children” (to people who brought little (5 or 6 years old) children to the bullfight arena). The demo lasted about two hours and was completely peaceful, which is a great thing IMHO, as it clearly shows which side despises violence and which one loves it. There have been several good news for the anti-bullfighting movement last years, like several Catalonian towns declaring bullfighting illegal, Barcelona declaring itself an anti-bullfighting city (although it doesn’t have the legislative power to really ban bullfighting), demos in lots of cities and increase in people attending them. If Bullfighting seems doomed, but we still will have to push for a few years to really bury it. Even if you are not Spanish you can still help abolish bullfighting by taking part in anti-bullfight demos in front of Spanish embassies (there were 17 of them this summer), boycotting travel agents that promote bullfighting, …

    21 September 2006

    Isaac Clerencia: Less than 24h to hit the (rail)road again

    Tomorrow at 6:00 AM I’ll be already sitting in a train in my way to Reus, from where I’ll fly to Dublin to attend aKademy 2006 … and I still haven’t managed to write about my trip to London :P (Well, in fact, I wrote about my two first days at London some time ago, but I haven’t found time to complete it). I’ve been trying to get some spare time for KDE hacking for a long time but I have only managed to do a dozen commits in the last months. I expect I can get some KOffice work done in aKademy and have a chance to enjoy beer with some KDE fellows.

    11 September 2006

    Isaac Clerencia: Wanna work in Spain?

    Hi there! My company is looking for people with Perl and Unix (preferably Debian) administration skills to continue working on eBox, a free software thingie we’re developing (check out the web to learn about it). Fluency in English is also required. Being an EU citizen would be great to avoid immigration hassles, although I guess we would be able to make it work otherwise. The job offer would be for one year, with high chances of extending it for more time if you’re willing to do so. You would have to come and live in Zaragoza, Spain. Zaragoza is a 600000 inhabitants city in northern Spain, between Madrid and Barcelona. We can help you find housing, or you can even share my flat with me if you dare (five minutes walk to our office), for a reasonable rent (below 15% of your wage for sure). You would be working with 12 young people (around 26 years old), all of us free software enthusiasts. We play in snow (yeah, we also have sunny summers), have nice decorations in our office, hang out together, … If you’re interested send me a CV to isaac@warp.es and feel free to ask for more information via e-mail. Best regards

    4 September 2006

    Isaac Clerencia: Request for campaign server for Battle for Wesnoth (updated)

    Hi, everybody. The Battle for Wesnoth project needs to move their campaign servers to a new location, and the main problem we have is we don’t have such a location. The requeriments are the following: If anyone can provide such a server, please contact me at isaac@warp.es or isaac at IRC (oftc or freenode) and The Battle for Wesnoth project will be eternally grateful to you. :) Update
    Thank you for all the offers received, it’s been overwhelming to get that amount of hosting offers in such a small time frame. We have already moved the campaign servers to one of the locations offered (http://www.drazzib.com) and the multiplayer servers to another one (http://www.bawue.net).

    Isaac Jones: Announcing Haskell'

    let haskell' = succ haskell98 in
    Announcing the Haskell' ("Haskell-Prime") process.  A short time ago,
    I asked for volunteers to help with the next Haskell standard.  A
    brave group has spoken up, and we've organized ourselves into a
    committee in order to coordinate the community's work.  It will be the
    committee's task to bring together the very best ideas and work of the
    broader community in an "open-source" way, and to fill in any gaps in
    order to make Haskell' as coherent and elegant as Haskell 98.
    Our task is broadly defined by our mission statement:
        The Haskell programming language is more-or-less divided into two
        "branches".  The Haskell 98 standard is the "stable" branch of the
        language, and that has been a big success.  A lot of progress has been
        made over the last few years in the "research" branch of the Haskell
        language.  It is constantly advancing, and we feel that it is time for
        a new standard which reflects those advancements.
        Haskell' will be a conservative refinement of Haskell 98. It will
        be the work of this committee to adopt a set of language
        extensions and modifications and to standardize a new set of
        libraries.
        We will strive to only include tried-and-true language features,
        and to define them at least as rigorously as Haskell 98 was
        defined. This standard will reflect the realities of developing
        practical applications in the Haskell language. We will work closely
        with the rest of the Haskell community to create this standard.
    Your Haskell' Committee is as follows (slightly munged email addresses
    follow):
     * Manuel M T Chakravarty <chak at cse.unsw.edu.au>
     * John Goerzen <jgoerzen at complete.org>
     * Bastiaan Heeren <bastiaan at cs.uu.nl>
     * Isaac Jones <ijones at galois.com>
     * John Launchbury <john at galois.com>
     * Andres Loeh <loeh at iai.uni-bonn.de>
     * Simon Marlow <simonmar at microsoft.com>
     * John Meacham <john at repetae.net>
     * Ravi Nanavati <ravi at bluespec.com>
     * Henrik Nilsson <nhn at cs.nott.ac.uk>
     * Ross Paterson <ross at soi.city.ac.uk>
     * Simon Peyton-Jones <simonpj at microsoft.com>
     * Don Stewart <dons at cse.unsw.edu.au>
     * Audrey Tang <autrijus at gmail.com>
     * Simon J. Thompson <S.J.Thompson at kent.ac.uk>
     * Malcolm Wallace <Malcolm.Wallace at cs.york.ac.uk>
     * Stephanie Weirich <sweirich at cis.upenn.edu>
    The editors are Isaac Jones and John Launchbury.
    Feel free to contact any of us with any concerns or questions.  If you
    don't know who to direct your questions to, email Isaac Jones
    ijones at syntaxpolice.org.
    Community involvement is vital to our task, and there will be a way
    for members of the community to make formal proposals.  In the opening
    phases, please use these more informal resources to help us coordinate
    Haskell':
     * The haskell-prime mailing list.  All technical discussion will take
       place here, or (if other meetings take place) be reported here.  Anyone
       can subscribe, and any subscriber can post questions and comments,
       and participate in discussions.  Anyone can read the list archives.
       http://haskell.org/mailman/listinfo/haskell-prime
     * A wiki / issue tracking system to document consensus and to track
       ongoing tasks.  This system is publicly readable, but only
       committee writable so that we may present it as the "official"
       output of the committee.  If you ever feel that the wiki is not
       accurate as to the consensus, please alert the committee!
       http://hackage.haskell.org/trac/haskell-prime
     * A darcs code repository for experiments, proposed libraries,and
       complex examples.  darcs is a decentralized system, so anyone can use
       it, but patches should be sent to Isaac Jones:
       http://hackage.haskell.org/trac/haskell-prime/wiki/SourceCode
    Please join us in making Haskell' a success.
    

    Isaac Jones: Halfs, a Haskell Filesystem

    I'm very exited this week because the company I work for just released a piece of open source software, Halfs, a Haskell Filesystem. There are a few groups thinking of using it, including darcs, a revision control system, and house an operating system written in Haskell. Since it requires kernel modules and a very specific Linux kernel (for now), I decided to release a virtual machine image that folks can download and just use on any architecture as described in the "virtualization environment" section of the quick start guide.

    Isaac Jones: Haskell' Summary and Status

    I'll try to update the Haskell community periodically on the status of the Haskell' language standard. As mentioned previously, we are currently focusing on two topics, concurrency and the class system. If you feel that you have anything important to contribute to those topics, now is the time to review the proposals, join in the Haskell' mailing list and let us know what you know! Stephanie Weirich has posted a summary of the class system discussion. Stephanie says:
         This page is important because it lists all of the proposals not
         related to MPTCs as well as trying to capture the big picture
         about where we stand with respect to MPTCs. I've been trying to
         not duplicate text that appears elsewhere in the wiki, but just
         provide a consistent picture of the state of the discussions on
         the mailing list.
         Please take a look at this page and help me fill it out. In
         particular, I've been trying to take a pulse of where we stand on
         some of these issues, and some of you may not agree! Tell me if
         I'm off the wall. Also, I've (mostly) concentrated on issues that
         have tickets, so I may have missed some issues that were only
         discussed in the mailing list.  Please let me know if there is
         anything I've forgotten.
    
    Simon Marlow has posted a summary of the concurrency discussion. Simon says:
         I have tried to summarise the various points that have arisen
         during the discussion.  If anyone feels they have been
         mis-paraphrased, or I have forgotten something, please feel free
         to edit, or send me some text for inclusion.  I don't want to
         include long gobs of text in here, though: just summarise the
         main points, and if necessary link to relevant mailing list
         posts.
    
    Thanks, Simon & Stephanie for keeping things moving forward!

    Isaac Jones: Who will be at ICFP 2006?

    Greetings! You may know that ICFP 2006 will be in Portland, OR where I live. I'm wondering who will be there. If you know / have met me / chat w/ me on IRC, please drop me a line and let me know you'll be in town. peace.

    Isaac Jones: Diebold and SCO are getting what they deserve?

    The following are my own opinions and impressions: It seems that California is taking action against Diebold, who has been working hard to break democracy in the US by selling broken hardware and software meant for voting. An advisory panel to Secretary of State Kevin Shelly recommended that California should ban the use of some 15,000 machines. This is really good news. One has to wonder that with no paper trail, and the number of screw-ups we know about already, how many more screw-ups were there? And on the SCO front, it seems that one of their major investors wants their money back. SCO has been trying to make money by suing people involved in Linux, including IBM. This might make it a little hard to pursue aggressive (and in my opinion, unethical) legal avenues against Linux users and vendors.

    Isaac Jones: Example Haskell language benchmark for Lars Wirzenius

    I was somewhat curious what the Haskell code for Lars Wirzenius experimental language benchmarks would look like. So I put together a quick implementation of it. It's 69 lines with a lot of comments, 34 lines without comments or type signatures (his Python implementation is 57 lines with a few comments). No, I don't think number of lines is an argument for quality. I wasn't programming for number of lines, by the way, this code is very readable to any Haskell programmer. Try it with the GHC compiler, especially with optimization. It should also work just fine with the Hugs interpreter (using runhugs). Note that this doesn't really address the speed issues that Lars is interested in. I don't know what input he's using anyway. You might want to read the GHC manual about how to write sooner, faster, smaller, thriftier Haskell code. Of course, I think that Haskell is a wonderful language both for serious programming, and for hobbies. Maybe it's the new programming language you should learn this year.

    Isaac Jones: General status report

    I've been busy with various things at work and at home. Hopefully if all works out well, you'll see something I wrote last week here soon. I'm very pleased that the darcs package has entered Debian unstable and builds on most platforms, after some tweaking. Darcs is an advanced revision control system. I'm pretty excited about it, and have started using it to track changes in my packages. It would be so wonderful if every upstream author used a distributed system like darcs or arch, since I could cherry-pick changes from the unstable branch to apply to the stable branch (if the author didn't do so themselves). For instance, I reported build problems in the darcs package on PowerPC, the upstream author fixed it in HEAD, I used "darcs get" to pick out the change I wanted, applied it to the stable version, and voila. This leads to a discussion I'm having with some Haskell developers about using version control systems other than CVS for certain projects. There's some resistance to it, even though darcs is written in Haskell, though the momentum isn't really a bad thing. I just wish that everyone were as excited as me about version control. For something so critical, caution is definitely called for, but I hope we can phase-in newer systems. So yeah, a bit of hacking on the Haskell Library Infrastructure Project, mostly behind the scenes working on making hmake into an API suitable for our purposes. Ohio LinuxFest got some Slashdot coverage. Cool!

    Isaac Jones: How to get involved in Free Software (the bug method)

    Are you a software developer? Are you graduating soon? Maybe you should get involved in free software projects! There are any number of reasons people get involved, from altruistic reasons to selfish reasons. Let's approach it from a "selfish" point of view. I assert that involvement in free software projects looks really good on a resume, and is an excellent way to "network". Networking isn't all about schmoozing at job fairs; it's about building a reputation with professionals in your field. There are very few fields where a huge number of professionals are so very accessible. Software developers are very lucky in this sense. Common wisdom seems to indicate that the job market for software developers is very competitive, and it's going to continue to be competitive for a while yet. Any edge you can get over your classmates is going to help. There is plenty of opportunity to contribute, no matter what your skill level. There is documentation to write and there are translations to perform. There are bugs to fix, and packages to create. Of course there are projects that need more "serious" development as well. You don't have to start your own open-source project, and you don't have to learn to hack on the Linux kernel to add something very attractive to your resume. When people ask me how to get involved in free software, I usually recommend that they start out reporting bugs in the open-source software they use frequently. You might install a version of GNU/Linux, or if you want to stick with Windows or MacOS, you should browse around to find out what free software is available. I think you'll be pleasantly surprised. Let's use "Gaim", a multi-protocol IM client, as an example of how this might proceed. Gaim runs on Windows, GNU/Linux variants, and I'd expect MacOS X, and Unix. It's open source and free: http://gaim.sourceforge.net/. Download Gaim and the Gaim source code. Build it for your machine if you want. Notice what language it's written in. Do you know this language? If not, can you understand it (if you know Java, you can probably understand a lot of C, for instance). Try out Gaim, set up your AOL Instant Messenger and your IRC channels. Visit some open source channels. See any problems? Check the bug reports to see if anyone else has seen that problem. If not, report it as a bug (you might want to google for "how to report a bug" first). Now check out the "bug reports" for Gaim. Pick a bug and try to reproduce it. Why are bug reports the first step in improving your resume?
  • Reporting a bug is a half-hour task.
  • Fixing a bug is often (not always) a small, weekend-sized task.
  • Bugs introduce you to the source code on a level where you don't have to understand everything (hopefully).
  • You will build familiarity with debugging tools which are invaluable for a developer.
  • You will start to build a reputation with the authors of the software, and in the free software community.
  • And because developers are always very happy to get bug fixes that they didn't have to work on themselves. Let's take a look at the bug list for Gaim again. Different ways to contribute to fixing a bug:
  • If you can reproduce the bug, you might add more information to the bug report: What steps did take to reproduce it? Is there a unique combination of features you need to be using to cause the bug?
  • If you can't reproduce the bug, maybe it's fixed in the version you're using! Maybe you should add that to the report (better read and understand it very carefully first). Pick another bug, repeat.
  • Depending on your skill level, you might try to fix this bug, or at least isolate where the bug came from. If you manage to fix it, read about the "diff" and "patch" utilities. Send the author a patch, or attach the patch to the bug report. Here is a bug that looks pretty easy, and it doesn't look like the developer is particularly thrilled to spend time on it: "Buddy Pounce does not get removed when user is deleted". I'm going to take a wild stab at how you might fix this bug: most probably, there's a "list" of "pounces" that has a data-structure which contains both the buddy's name, and the pounce action, whatever that is. Find the code where the buddy is deleted from the buddy list (a different list). Add code to search through the "pounces" list to delete that buddy from the pounces list as well. Compile, test, and run diff to create a patch, attach it to the bug report, take a bow. Now add this to your resume. You are now 50% more interesting to me, as someone who reads resumes, than your classmates who have never taken on a project outside of school. You've shown initiative, skill, and maybe even teamwork. Higher levels of commitment If there's a piece of software that you love, that you think is really important, then you might try adding features to that software and joining the development effort. Lots of projects have a page dedicated to information about how to help out. Here is one for the Mozilla project, for instance. If you want to lead a development project, you might adopt one that has been orphaned. Many people recommend against starting your own project off the bat. I've presented you with a method to increase your skill and reputation, and to add something interesting to your resume. Try it out. You might find out why so many software professionals work on free software projects. It's tons of fun! Feel free to send me comments on this document, or to tell me whether this advice has effected you.
  • Isaac Jones: Packaging darcs

    Last night, I worked a bit on the Debian package for darcs. darcs is an advanced revision control system, "two senses in which it is supposed to be advanced: 1) each copy of the source is a fully functional branch, and 2) underlying darcs is a consistent and powerful theory of patches.". Darcs is also written in Haskell, which makes it even more cool. When I did my first big group project in college, I started using CVS and completely loved it. I tried subversion for a while last year, and at home and work I'm currently using arch / tla. I'm excited about these two distributed revision control systems, tla and darcs. Keeping packages in VC: Since the author of darcs, David Roundy, is apparently a Debian user (and a skillful one at that), I expect this package to be a joy to take care of. At his suggestion, I'm going to keep my changes in darcs itself, and I figure that while I'm at it, I'll keep all my packages in darcs. I'm debating a bit about how to go about this, though. I could keep just the "debian" directory in version control, but then if I have to change the upstream sources (like the Makefile), then I couldn't track that. On the other hand, if I keep all the upstream sources in VC, then I'd have to sorta pound on the repository whenever there's a new release, with a bunch of big changes. Not too bad, I guess. What do those of you who keep packages in version control do? I was very pleased to see Colin's blog entry yesterday about Intel support of its Centrino chipset for Linux. I've been sending mail to them every couple of weeks for the last 8 months or so.

    Next.

    Previous.